package com.kklsqm.langchain4j.demo;

/**
 * 功能:
 * 作者: 沙琪马
 * 日期: 2025/5/10 16:45
 */

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.google.gson.JsonObject;

import java.util.Arrays;
import java.util.List;

public class SenseVoiceDemo {

    public static void main(String[] args) {
        // Step 1: 构造请求参数
        TranscriptionParam param = TranscriptionParam.builder()
                .model("paraformer-8k-v1")
                .fileUrls(List.of(
                        "http://47.111.123.183:8081/IdPhoto/speech.mp3"
                ))
                .parameter("language_hints", new String[]{"en"})  // 可选：设定语言
                .apiKey("sk-7fc88c005edb46928c4ef180268169a2")
                // .parameter("disfluencyRemovalEnabled", true) // 可选：开启语气词过滤
                .build();

        // Step 2: 提交异步识别任务
        Transcription transcription = new Transcription();
        TranscriptionResult asyncResult = transcription.asyncCall(param);

        String taskId = asyncResult.getTaskId();
        System.out.println("提交成功，TaskId: " + taskId);

        // Step 3: 构造查询参数
        TranscriptionQueryParam queryParam = TranscriptionQueryParam.FromTranscriptionParam(param, taskId);

        // Step 4: 阻塞等待任务完成（或使用 fetch 轮询查询）
        TranscriptionResult result = transcription.wait(queryParam);

        // Step 5: 处理结果
        System.out.println("任务状态: " + result.getTaskStatus());

        if (result.getTaskStatus() == TaskStatus.SUCCEEDED) {
            // 如果需要原始JSON输出：
            JsonObject outputJson = result.getOutput();
            System.out.println("完整JSON识别结果: ");
            System.out.println(outputJson);
        } else {
            System.err.println("任务失败: " + result.getTaskStatus());
        }
    }
}
